﻿#pragma once
#ifndef UnitConvert_hpp
#define UnitConvert_hpp


namespace MMF
{
		//使用字面值操作符  operator""

    	/**
		@brief 该函数用于单位转换：GB-->B
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		// 阈值开关
		inline constexpr auto operator"" _GB(unsigned long long val)
		{
			return val * 1024 * 1024 * 1024;
		}

        
		/**
		@brief 该函数用于单位转换：MB-->B
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		inline constexpr auto operator"" _MB(unsigned long long val)
		{
			return val * 1024 * 1024;
		}


		/**
		@brief 该函数用于单位转换：KB-->B
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		inline constexpr auto operator"" _KB(unsigned long long val)
		{
			return val * 1024;
		}


		/**
		@brief 该函数用于单位转换：B-->B
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		inline constexpr auto operator"" _B(unsigned long long val)
		{
			return val;
		}


		/**
		@brief 该函数用于单位转换：GHZ-->HZ
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		inline constexpr auto operator"" _GHZ(unsigned long long val)
		{
			return val * 1000 * 1000 * 1000;
		}
		inline constexpr unsigned long long operator"" _GHZ(long double val)
		{
			return (unsigned long long)(val * 1000 * 1000 * 1000);
		}


		/**
		@brief 该函数用于单位转换：MHZ-->HZ
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		inline constexpr auto operator"" _MHZ(unsigned long long val)
		{
			return val * 1000 * 1000;
		}


		/**
		@brief 该函数用于单位转换：KHZ-->HZ
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		inline constexpr unsigned long long operator"" _KHZ(unsigned long long val)
		{
			return val * 1000;
		}


		/**
		@brief 该函数用于单位转换：HZ-->HZ
		@param val 输入值
		@return 计算出的转换单位后的数值
		*/
		inline constexpr unsigned long long operator"" _HZ(unsigned long long val)
		{
			return val;
		}
}


#endif